package day_240429.override;

/**
 * Overriding it
 * <p>
 * You can write a new instance method in the subclass that has the same signature as the one in the superclass,
 *   thus overriding it.
 */
public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.testInstanceMethod();

        Animal animal = cat;
        // Q: 下面的输出会是什么？
        animal.testInstanceMethod();

        // Q: 下面的输出会是什么？
        // A: 会报错。
        // Cannot resolve method 'eat' in 'Animal'
        // 此时，虽然 new 出来的是 Cat 对象，
        // 但是，当你把它传给 Animal 类型的时候，
        // 原本属于 Cat 特有那些 state 和 behavior ，以 Animal 的视角，看不到了
        //animal.eat();
    }
}